#include <iostream>

using namespace  std;

class Base{
	public:
		virtual void print(){
			cout<<"base"<<endl;
		}
		virtual void fun() = 0;
};

class Drive1:public Base{
	public:
		void print()
		{
			cout<<"drive1"<<endl;
		}
		void fun()
		{
			cout<<"drive1 fun"<<endl;
		}
};

class Drive2:public Base
{
	public:
		void print()
		{
			cout<<"drive2"<<endl;
		}
	    void fun()
		{
			cout<<"drive2 fun"<<endl;
		 } 
}; 

int main()
{
	Drive1 d1;
	Drive2 d2;
	
	Base * b = &d1;
	b->fun();
	b->Base::print();
	b = &d2;
	b->fun();
	b->Drive2::print();
	return 0;
 } 
